Skip to content

Conversation

@cweiske
Copy link

@cweiske cweiske commented Nov 28, 2024

When having huge dependency lists, separate tables for direct and indirect dependencies are helpful - you see which changes were desired, and which ones came only automatically.

Having direct prod+dev changes first eases seeing wanted changes.

Builds upon #41
Resolves: #37

Short example

$ composer-lock-diff --no-links
+------------------------------------+-------------+-----------------------+
| Production Changes                 | From        | To                    |
+------------------------------------+-------------+-----------------------+
| andersundsehr/aus-driver-amazon-s3 | 1.12.1      | 1.13.1                |
| felixnagel/generic-gallery         | 4.3.0       | 5.2.0                 |
| fluidtypo3/flux                    | 9.7.2       | 9.7.4                 |
+------------------------------------+-------------+-----------------------+

+-------------------+---------+---------+
| Dev Changes       | From    | To      |
+-------------------+---------+---------+
| mogic/mogic-phpcs | d81fefd | 0eb8337 |
+-------------------+---------+---------+

+------------------------------------+---------+---------+
| Indirect Production Changes        | From    | To      |
+------------------------------------+---------+---------+
| aws/aws-crt-php                    | v1.0.2  | v1.2.7  |
| aws/aws-sdk-php                    | 3.255.7 | 3.331.0 |
| beberlei/assert                    | v3.3.2  | v3.3.3  |
| clue/stream-filter                 | v1.6.0  | v1.7.0  |
+------------------------------------+---------+---------+

+----------------------+---------+---------+
| Indirect Dev Changes | From    | To      |
+----------------------+---------+---------+
| phpstan/phpstan      | 1.12.10 | 1.12.11 |
+----------------------+---------+---------+

Long example

Real world

$ composer-lock-diff --no-links
+------------------------------------+-------------+-----------------------+
| Production Changes                 | From        | To                    |
+------------------------------------+-------------+-----------------------+
| andersundsehr/aus-driver-amazon-s3 | 1.12.1      | 1.13.1                |
| felixnagel/generic-gallery         | 4.3.0       | 5.2.0                 |
| fluidtypo3/flux                    | 9.7.2       | 9.7.4                 |
| fluidtypo3/vhs                     | 6.1.2       | 6.1.3                 |
| helhum/typo3-console               | v6.7.6      | v7.1.6                |
| jigal/t3adminer                    | 10.0.1      | 12.1.0                |
| mogic/t3x-nh2020                   | dev-develop | dev-SRH-1440-typo3v11 |
| mogic/t3x-srh                      | dev-develop | dev-SRH-1440-typo3v11 |
| mogic/t3x-srh-service              | dev-develop | dev-SRH-1440-typo3v11 |
| ssch/typo3-encore                  | v5.0.2      | v5.0.7                |
| symfony/webpack-encore-bundle      | v1.16.0     | v1.17.2               |
| tomasnorre/crawler                 | 11.0.7      | 11.0.10               |
| typo3/cms-backend                  | v10.4.37    | v11.5.41              |
| typo3/cms-belog                    | v10.4.37    | v11.5.41              |
| typo3/cms-beuser                   | v10.4.37    | v11.5.41              |
| typo3/cms-core                     | v10.4.37    | v11.5.41              |
| typo3/cms-extbase                  | v10.4.37    | v11.5.41              |
| typo3/cms-extensionmanager         | v10.4.37    | v11.5.41              |
| typo3/cms-felogin                  | v10.4.37    | v11.5.41              |
| typo3/cms-filelist                 | v10.4.37    | v11.5.41              |
| typo3/cms-filemetadata             | v10.4.37    | v11.5.41              |
| typo3/cms-fluid                    | v10.4.37    | v11.5.41              |
| typo3/cms-fluid-styled-content     | v10.4.37    | v11.5.41              |
| typo3/cms-form                     | v10.4.37    | v11.5.41              |
| typo3/cms-frontend                 | v10.4.37    | v11.5.41              |
| typo3/cms-impexp                   | v10.4.37    | v11.5.41              |
| typo3/cms-indexed-search           | v10.4.37    | v11.5.41              |
| typo3/cms-info                     | v10.4.37    | v11.5.41              |
| typo3/cms-install                  | v10.4.37    | v11.5.41              |
| typo3/cms-lowlevel                 | v10.4.37    | v11.5.41              |
| typo3/cms-recordlist               | v10.4.37    | v11.5.41              |
| typo3/cms-redirects                | v10.4.37    | v11.5.41              |
| typo3/cms-rte-ckeditor             | v10.4.37    | v11.5.41              |
| typo3/cms-scheduler                | v10.4.37    | v11.5.41              |
| typo3/cms-seo                      | v10.4.37    | v11.5.41              |
| typo3/cms-setup                    | v10.4.37    | v11.5.41              |
| typo3/cms-sys-note                 | v10.4.37    | v11.5.41              |
| typo3/cms-t3editor                 | v10.4.37    | v11.5.41              |
| typo3/cms-tstemplate               | v10.4.37    | v11.5.41              |
| typo3/cms-viewpage                 | v10.4.37    | v11.5.41              |
| typo3/cms-workspaces               | v10.4.37    | v11.5.41              |
+------------------------------------+-------------+-----------------------+

+-------------------+---------+---------+
| Dev Changes       | From    | To      |
+-------------------+---------+---------+
| mogic/mogic-phpcs | d81fefd | 0eb8337 |
+-------------------+---------+---------+

+------------------------------------+---------+---------+
| Indirect Production Changes        | From    | To      |
+------------------------------------+---------+---------+
| aws/aws-crt-php                    | v1.0.2  | v1.2.7  |
| aws/aws-sdk-php                    | 3.255.7 | 3.331.0 |
| beberlei/assert                    | v3.3.2  | v3.3.3  |
| clue/stream-filter                 | v1.6.0  | v1.7.0  |
| composer/semver                    | 3.3.2   | 3.4.3   |
| doctrine/annotations               | 1.14.3  | 1.14.4  |
| doctrine/deprecations              | v1.1.1  | 1.1.3   |
| egulias/email-validator            | 2.1.25  | 3.2.6   |
| enshrined/svg-sanitize             | 0.15.4  | 0.18.0  |
| guzzlehttp/guzzle                  | 6.5.8   | 7.9.2   |
| guzzlehttp/promises                | 1.5.3   | 2.0.4   |
| guzzlehttp/psr7                    | 1.9.1   | 2.7.0   |
| jean85/pretty-package-versions     | 2.0.5   | 2.1.0   |
| lolli42/finediff                   | 1.0.2   | 1.0.4   |
| masterminds/html5                  | 2.8.0   | 2.9.0   |
| mtdowling/jmespath.php             | 2.6.1   | 2.8.0   |
| php-http/client-common             | 2.6.0   | 2.7.2   |
| php-http/discovery                 | 1.14.3  | 1.20.0  |
| php-http/httplug                   | 2.3.0   | 2.4.1   |
| php-http/message                   | 1.13.0  | 1.16.2  |
| php-http/message-factory           | v1.0.2  | 1.1.0   |
| php-http/promise                   | 1.1.0   | 1.3.1   |
| phpdocumentor/reflection-docblock  | 5.3.0   | 5.6.0   |
| phpdocumentor/type-resolver        | 1.7.2   | 1.10.0  |
| phpstan/phpdoc-parser              | 1.23.0  | 1.33.0  |
| psr/http-client                    | 1.0.2   | 1.0.3   |
| psr/http-factory                   | 1.0.2   | 1.1.0   |
| sentry/sdk                         | 3.3.0   | 3.6.0   |
| sentry/sentry                      | 3.12.0  | 3.22.1  |
| symfony/asset                      | v5.4.13 | v5.4.45 |
| symfony/cache                      | v5.4.25 | v5.4.46 |
| symfony/cache-contracts            | v2.5.2  | v2.5.4  |
| symfony/config                     | v5.4.21 | v5.4.46 |
| symfony/dependency-injection       | v5.4.25 | v5.4.48 |
| symfony/deprecation-contracts      | v2.5.3  | v2.5.4  |
| symfony/error-handler              | v5.4.17 | v5.4.46 |
| symfony/event-dispatcher           | v5.4.22 | v5.4.45 |
| symfony/event-dispatcher-contracts | v2.5.2  | v2.5.4  |
| symfony/expression-language        | v5.4.21 | v5.4.45 |
| symfony/http-client                | v5.4.17 | v5.4.48 |
| symfony/http-client-contracts      | v2.5.2  | v2.5.4  |
| symfony/http-foundation            | v5.4.25 | v5.4.48 |
| symfony/http-kernel                | v5.4.18 | v5.4.48 |
| symfony/mailer                     | v5.4.22 | v5.4.45 |
| symfony/mime                       | v5.4.23 | v5.4.45 |
| symfony/options-resolver           | v5.4.11 | v5.4.45 |
| symfony/polyfill-intl-icu          | v1.27.0 | v1.31.0 |
| symfony/polyfill-intl-idn          | v1.27.0 | v1.31.0 |
| symfony/polyfill-php72             | v1.27.0 | REMOVED |
| symfony/property-access            | v5.4.22 | v5.4.45 |
| symfony/property-info              | v5.4.24 | v5.4.48 |
| symfony/routing                    | v5.4.25 | v5.4.48 |
| symfony/service-contracts          | v2.5.3  | v2.5.4  |
| symfony/var-dumper                 | v5.4.17 | v5.4.48 |
| symfony/var-exporter               | v5.4.21 | v5.4.45 |
| symfony/web-link                   | v5.4.3  | v5.4.45 |
| typo3/class-alias-loader           | v1.1.4  | v1.2.0  |
| typo3/cms-cli                      | 2.0.0   | 3.1.2   |
| typo3/cms-composer-installers      | v3.1.3  | v3.1.4  |
| typo3/html-sanitizer               | v2.1.1  | v2.2.0  |
| bacon/bacon-qr-code                | NEW     | 2.0.8   |
| christian-riesen/base32            | NEW     | 1.6.0   |
| dasprid/enum                       | NEW     | 1.0.6   |
| helhum/php-error-reporting         | NEW     | v1.0.1  |
| symfony/lock                       | NEW     | v5.4.45 |
| symfony/polyfill-php83             | NEW     | v1.31.0 |
| symfony/rate-limiter               | NEW     | v5.4.47 |
+------------------------------------+---------+---------+

+----------------------+---------+---------+
| Indirect Dev Changes | From    | To      |
+----------------------+---------+---------+
| phpstan/phpstan      | 1.12.10 | 1.12.11 |
+----------------------+---------+---------+

@cweiske
Copy link
Author

cweiske commented Dec 12, 2024

Another production example:

$ composer-lock-diff --no-links --md
| Production Changes | From    | To     |
|--------------------|---------|--------|
| fluidtypo3/flux    | 10.0.10 | 10.1.0 |

| Indirect Production Changes       | From    | To      |
|-----------------------------------|---------|---------|
| aws/aws-sdk-php                   | 3.331.0 | 3.334.4 |
| doctrine/deprecations             | 1.1.3   | 1.1.4   |
| firebase/php-jwt                  | v6.10.0 | v6.10.2 |
| lolli42/finediff                  | 1.0.4   | 1.1.1   |
| phpdocumentor/reflection-docblock | 5.6.0   | 5.6.1   |
| psr/cache                         | 1.0.1   | 3.0.0   |
| psr/link                          | 1.0.0   | 2.0.1   |
| symfony/asset                     | v5.4.45 | v6.4.13 |
| symfony/cache                     | v5.4.46 | v6.4.16 |
| symfony/cache-contracts           | v2.5.4  | v3.5.1  |
| symfony/deprecation-contracts     | v2.5.4  | v3.5.1  |
| symfony/error-handler             | v5.4.46 | v6.3.12 |
| symfony/event-dispatcher          | v5.4.45 | v6.4.13 |
| symfony/http-client               | v5.4.48 | v6.2.13 |
| symfony/http-client-contracts     | v2.5.4  | v3.5.2  |
| symfony/http-kernel               | v5.4.48 | v6.0.20 |
| symfony/lock                      | v5.4.45 | v6.4.13 |
| symfony/process                   | v5.4.47 | v6.4.15 |
| symfony/string                    | v5.4.47 | v6.4.15 |
| symfony/var-dumper                | v5.4.48 | v6.4.15 |
| symfony/var-exporter              | v5.4.45 | v7.2.0  |
| symfony/web-link                  | v5.4.45 | v6.4.13 |
| typo3/phar-stream-wrapper         | v3.1.7  | v3.1.8  |
| typo3fluid/fluid                  | 2.7.4   | 2.15.0  |

| Indirect Dev Changes    | From    | To      |
|-------------------------|---------|---------|
| league/flysystem        | 2.5.0   | 3.29.1  |
| league/flysystem-memory | 2.0.6   | 3.29.0  |
| nette/utils             | v3.2.10 | v4.0.5  |
| phpstan/phpstan         | 1.12.11 | 1.12.12 |
| league/flysystem-local  | NEW     | 3.29.0  |

@gisostallenberg
Copy link

@davidrjonas I really like this to be added. What is holding this back?
Can I help to make this complete?

djonas-noip and others added 3 commits November 13, 2025 10:34
Builds upon davidrjonas#41
Resolves: davidrjonas#37

Example:

$ composer-lock-diff --no-links
+------------------------------------+-------------+-----------------------+
| Production Changes                 | From        | To                    |
+------------------------------------+-------------+-----------------------+
| andersundsehr/aus-driver-amazon-s3 | 1.12.1      | 1.13.1                |
| felixnagel/generic-gallery         | 4.3.0       | 5.2.0                 |
| fluidtypo3/flux                    | 9.7.2       | 9.7.4                 |
+------------------------------------+-------------+-----------------------+

+-------------------+---------+---------+
| Dev Changes       | From    | To      |
+-------------------+---------+---------+
| mogic/mogic-phpcs | d81fefd | 0eb8337 |
+-------------------+---------+---------+

+------------------------------------+---------+---------+
| Indirect Production Changes        | From    | To      |
+------------------------------------+---------+---------+
| aws/aws-crt-php                    | v1.0.2  | v1.2.7  |
| aws/aws-sdk-php                    | 3.255.7 | 3.331.0 |
| beberlei/assert                    | v3.3.2  | v3.3.3  |
| clue/stream-filter                 | v1.6.0  | v1.7.0  |
+------------------------------------+---------+---------+

+----------------------+---------+---------+
| Indirect Dev Changes | From    | To      |
+----------------------+---------+---------+
| phpstan/phpstan      | 1.12.10 | 1.12.11 |
+----------------------+---------+---------+
@cweiske cweiske force-pushed the feature/direct-deps branch from 4a51879 to 315d3ed Compare November 13, 2025 09:35
@cweiske
Copy link
Author

cweiske commented Nov 13, 2025

I've rebased against latest master.
I'm using this since a year and it is working fine.

@gisostallenberg
Copy link

@davidrjonas I really like this to be added. What is holding this back?
Can I help to make this complete?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Easily identify direct composer dependencies

3 participants